home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr47 / wasm223.zip / OBJECT.INC < prev    next >
Text File  |  1993-05-04  |  4KB  |  161 lines

  1. ;****************************************
  2. ; WASM Object Module Macros
  3. ; By Eric Tauck
  4. ;
  5. ; Defines:
  6. ;
  7. ;   INIT    initialize OBJ file
  8. ;   PUBLIC  define public symbols
  9. ;   BEGIN   begin code and data
  10. ;   END     end of code and data
  11.  
  12. ;--- segment align values
  13.  
  14. ALIGN_BYTE      EQU     00100000B       ;byte aligned
  15. ALIGN_WORD      EQU     01000000B       ;word aligned
  16. ALIGN_PARA      EQU     01100000B       ;paragraph aligned
  17. ALIGN_PAGE      EQU     10000000B       ;page aligned
  18.  
  19. ;--- segment combine values
  20.  
  21. COMBINE_PRIVATE EQU     00000000B       ;private segment (not combined)
  22. COMBINE_PUBLIC  EQU     00001000B       ;public segment (combined)
  23. COMBINE_STACK   EQU     00010100B       ;stack segment (combined)
  24. COMBINE_COMMON  EQU     00011000B       ;common segment (overlapped)
  25.  
  26. _ENDSIZ         EQU     5       ;size of MODEND record generated by END macro
  27.  
  28. ;================================================
  29. ; This local macro declares an OBJ string.  The
  30. ; first byte is the length and the remaining
  31. ; bytes are the string.
  32.  
  33. _str    MACRO   str
  34.         DB      OFFSET _str2 - OFFSET _str1     ;declare length
  35. _str1   DB      str                             ;declare string
  36. _str2
  37.         ENDM
  38.  
  39. ;================================================
  40. ; Initialize object module.
  41. ;
  42. ; Arguments:
  43. ;
  44. ;   name     name of module (usually source file)
  45. ;   segment  name of segment
  46. ;   class    name of class
  47. ;   segtype  align and combine values
  48. ;
  49. ; Example:
  50. ;
  51. ;   INIT 'MYFILE.ASM', '_TEXT', 'CODE', ALIGN_BYTE+COMBINE_PRIVATE
  52.  
  53. INIT    MACRO   name, segment, class, segtype
  54.  
  55. ;--- THEADR
  56.  
  57.         DB      080H
  58.         DW      OFFSET _init2 - OFFSET _init1
  59. _init1  RESETC
  60.         _str    name                    ;name of module
  61.         DB      $SUM
  62. _init2 
  63.  
  64. ;--- COMMENT
  65.  
  66.         DB      088H
  67.         DW      OFFSET _init4 - OFFSET _init3
  68. _init3  RESETC
  69.         DB      000000B                 ;comment type
  70.         DB      00H                     ;comment class
  71.         DB      'WASM Object Module'    ;comment
  72.         DB      $SUM
  73. _init4
  74.  
  75. ;--- LNAMES
  76.  
  77.         DB      096H
  78.         DW      OFFSET _init6 - OFFSET _init5
  79. _init5  RESETC
  80.         _str    segment                 ;segment name
  81.         IFN     TYPE(class)=TYPE()
  82.         _str    class                   ;class name
  83.         ENDIF
  84.         DB      $SUM
  85. _init6
  86.  
  87. ;--- SEGDEF
  88.  
  89.         DB      098H
  90.         DW      OFFSET _init8 - OFFSET _init7
  91. _init7  RESETC
  92.         DB      segtype                 ;segment type
  93.         DW      $END - _ENDSIZ          ;segment length
  94.         DB      1                       ;segment name
  95.         IFN     TYPE(class)=TYPE()
  96.         DB      2                       ;class name
  97.         ELSE
  98.         DB      0                       ;no class
  99.         ENDIF
  100.         DB      0                       ;no overlay name
  101.         DB      $SUM
  102. _init8
  103.         ENDM
  104.  
  105. ;================================================
  106. ; Define a public symbol.
  107. ;
  108. ; Arguments: 
  109. ;
  110. ;   symbol  assembler symbol to be referenced
  111. ;   name    name to use in referencing symbol
  112. ;
  113. ; Example:
  114. ;
  115. ;   PUBLIC  MyProc, 'MYPROC'
  116.  
  117. PUBLIC  MACRO   symbol, name
  118.         DB      090H
  119.         DW      OFFSET _publc2 - OFFSET _publc1
  120. _publc1 RESETC
  121.         DB      0                       ;group name
  122.         DB      1                       ;segment name
  123.         _str    name                    ;name
  124.         DW      OFFSET symbol           ;symbol
  125.         DB      0                       ;type
  126.         DB      $SUM
  127. _publc2 
  128.         ENDM
  129.  
  130. ;================================================
  131. ; Begin assembler code/data.
  132.  
  133. BEGIN   MACRO
  134.  
  135. ;--- LEDATA
  136.  
  137.         DB      0A0H
  138.         DW      $END - _ENDSIZ + 3
  139.         RESETC
  140.         DB      1                       ;segment
  141.         DW      0                       ;offset
  142.         ORG     0
  143.         ENDM
  144.  
  145. ;================================================
  146. ; End of assembler code/data (end of object
  147. ; module).
  148.  
  149. END     MACRO
  150.         DB      $SUM
  151.  
  152. ;--- MODEND
  153.  
  154.         DB      08AH
  155.         DW      OFFSET _end2 - OFFSET _end1
  156. _end1   RESETC
  157.         DB      00000000B               ;attribute
  158.         DB      $SUM
  159. _end2
  160.         ENDM
  161.